package main

import (
	"fmt"
	"runtime"
	"sync"
	"time"
)

//同步锁使用不当
func handle(v int) {
	var wg sync.WaitGroup
	wg.Add(5)
	for i := 0; i < v; i++ {
		fmt.Println("脑子进焦鱼了")
		wg.Done()
	}
	//for i := 0; i < v; i++ { 建议写法
	//     wg.Add(1)
	//     defer wg.Done()
	//     fmt.Println("脑子进焦鱼了")
	// }
	wg.Wait()
}

func main() {
	defer func() {
		fmt.Println("goroutines: ", runtime.NumGoroutine())
	}()

	go handle(3)
	time.Sleep(time.Second)
}

/*在这个例子中，我们调用了同步编排 sync.WaitGroup，模拟了一遍我们会从外部传入循环遍历的控制变量。
但由于 wg.Add 的数量与 wg.Done 数量并不匹配，因此在调用 wg.Wait 方法后一直阻塞等待。*/
